package com.zrkizzy.hashmap;

import java.util.HashSet;
import java.util.Set;

/**
 * 202. 快乐数
 *
 * @author zhangrongkang
 * @since 2022/11/22
 * @see <a href="https://leetcode.cn/problems/happy-number/description/">https://leetcode.cn/problems/happy-number/description/</a>
 */
public class 快乐数 {

    // Set集合
    public boolean isHappy(int n) {
        // 如果出现重复则说明不是快乐数
        // 定义用于存储数据的Set集合
        Set<Integer> set = new HashSet<>();
        // 当n不为1时
        while (n != 1) {
            // 如果Set集合中存在当前数字
            if (set.contains(n)) {
                return false;
            }
            // 将当前数字添加到Set集合中
            set.add(n);
            n = getTarget(n);
        }
        return true;
    }

    /**
     * 获取一个数求和后的值
     */
    private int getTarget(int num) {
        // 定义返回值
        int result = 0;
        // 获取到sum
        while (num != 0) {
            int temp = num % 10;
            result += temp * temp;
            num /= 10;
        }
        return result;
    }
}
